package controleCentral;

import java.net.MalformedURLException;
import java.rmi.Naming;
import java.rmi.RemoteException;
import java.rmi.server.UnicastRemoteObject;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import modelo.EstacaoFerroviaria;

public class CentralDeControle extends UnicastRemoteObject implements
		CentralServidor {

	private Map<Integer, EstacaoFerroviaria> estacoesFerroviarias;

	public static void main(String[] args) {

		try {
			CentralDeControle central = new CentralDeControle();
			Naming.rebind("//localhost/CentralServidor", central);
			System.out.println("Gerou");
		} catch (RemoteException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (MalformedURLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}

	public CentralDeControle() throws RemoteException {

		super();
		estacoesFerroviarias = new HashMap<Integer, EstacaoFerroviaria>();
	}

	public boolean inserirEstacaoFerroviaria(EstacaoFerroviaria estacao) {

		boolean inserido = false;

		if (!estacoesFerroviarias.containsKey(estacao.getId())) {

			// estacoesFerroviarias.put(estacao.getId(), estacao);
			inserido = true;
		}

		return inserido;
	}

	@Override
	public boolean existeEspacoNaEstacao(int idEstacao) {

		if (estacoesFerroviarias.containsKey(idEstacao)) {
			EstacaoFerroviaria proxEstacao = estacoesFerroviarias
					.get(idEstacao);
			return proxEstacao.existeEspaco();

		}
		return false;
	}

	@Override
	public boolean podeIrProxEstacao(int idEstacao) {

		if (estacoesFerroviarias.containsKey(idEstacao)) {
			EstacaoFerroviaria proxEstacao = estacoesFerroviarias
					.get(idEstacao);

			return proxEstacao.existeEspaco();

		}
		return false;
	}

	public boolean existeEstacao(int idEstacao) {
		System.out.println("CentralDeControle.existeEstacao()");
		return true;
	}
}
